package org.itstack.demo.design.mediator;

/**
 * @Author: fanYuLe
 * @CreateTime: 2023-12-27  14:33
 * @Description: SqlSessionFactory具体实现类
 * DefaultSqlSessionFactory ，是使⽤mybatis最常⽤的类，这⾥我们简单的实现了⼀个版本。
 * 虽然是简单的版本，但是包括了最基本的核⼼思路。当开启 SqlSession 时会进⾏返回⼀
 * 个 DefaultSqlSession
 * 这个构造函数中向下传递了 Configuration 配置⽂件，在这个配置⽂件中包括； Connection
 * connection 、 Map<String, String> dataSource 、 Map<String, XNode>
 * mapperElement 。如果有你阅读过Mybatis源码，对这个就不会陌⽣。
 */
public class DefaultSqlSessionFactory implements SqlSessionFactory{
    private final Configuration configuration;

    public DefaultSqlSessionFactory(Configuration configuration) {
        this.configuration = configuration;
    }

    @Override
    public SqlSession openSession() {
        return new DefaultSqlSession(configuration.connection,configuration.mapperElement);
    }
}
